package net.csdn.business.common.domain.request;

import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import net.csdn.business.common.domain.validation.groups.System;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @author likun
 * @date 2022/6/25 18:59
 */
@Data
public class InvitationSendReqDto implements Serializable {
    /**
     * 邀请用户（这里当前登录用户）
     */
    //20230515 由于应用app也可以调用open api组织发送邀请用户加入的接口，当应用token关联的是组织的时候，此时当前操作用户。
    //@NotBlank(message = "inviterUid 不能为空", groups = {System.class})
    private String inviterUid;

    /**
     * 被邀请用户
     */
    @Valid
    @NotBlank(message = "uid 不能为空")
    private String uid;

    @NotNull(message = "targetTypeEnum 不能为空")
    private Integer targetType;

    @NotBlank(message = "targetId 不能为空")
    @Size(max = 60, message = "targetId 长度不合法")
    private String targetId;

    private String launchId;

    /**
     * 组织命名空间，邀请用户加入时候，需要此参数。
     */
    private String orgCode;

    /**
     * 扩展参数
     * <code>
     * {
     * "accessLevel":20, // repo 邀请
     * "roleCode":"maintainer" // org 邀请
     * }
     * </code>
     */
    private JSONObject param;
}